package paas.storage.distributedColumnDatabase;

import paas.storage.result.*;

/**
 * 操作数据接口
 *
 * @author xufeng
 * @version 1.0
 * @date 2021/1/24
 */
public interface IData {

    /**
     * 数据插入
     * @param connectionId
     * @param database 数据库
     * @param table 必填
     * @param columnFamilyList  必填  列簇列表 使用JSON方式定义的列簇值列表，定义方式：
     * [{
     * 	"row_key": "row1",
     * 	"columnfamily": "cf3:c1",
     * 	"value": "45"
     * }, {
     * 	"rowKey": "row2",
     * 	"columnfamily": "cf3:c2",
     * 	"value": 12
     * }]
     * @param expendParams 以json字符串格式定义：
     * {key1:value1, key2:value2,e 。
     * @return
     */
     DataInsertResponse insert(String connectionId, String database, String table, String columnFamilyList, String expendParams);

    /**
     * 删除数据
     * @param connectionId
     * @param database 数据库 不必填
     * @param table 必填
     * @param rowKey
     * @param columnFamilyList 列簇信息
     * @param expendParams
     * @return
     */
     Response delete(String connectionId, String database, String table, String rowKey, String columnFamilyList, String expendParams);

    /**
     * 更新数据
     * @param connectionId
     * @param database 数据库 不必填
     * @param table 表 必填
     * @param columnFamilyList 列簇信息
     * @param expendParams 扩展字段
     * @return
     */
     Response update(String connectionId, String database, String table, String columnFamilyList, String expendParams);

    /**
     * 查询数据
     * @param connectionId
     * @param database 数据库
     * @param table  表
     * @param conditions 必填  查询条件使用JSON方式定义的查询条件列表,支持正则表达式，支持过滤器等用户自定义查询条件， 例如：
     * {"MaxVersions":3, "TimeRange": "[454546,677357]","filter":{"SingleColumnValue Filter":{"family": Bytes.
     * .toBytes("columnfamily1"),"qualifier": Bytes.toBytes("column1"),"compareOp": CompareOp.EQUAL, "value": Bytes.
     * .toBytes("2013-06-08")}}
     * @param startKey  起始键 不必填
     * @param endKey 结束键 不必填
     * @param columnFamilyList  列簇列表 不必填 可传递列族中某个列或整个列族，定义方式：
     * ["columnfamily1:column1","columnfamil2:colum n2",:]
     * @param expendParams 以json字符串格式定义：
     * {key1:value1, key2:value2,By
     * @return
     */
    DataQueryResponse query(String connectionId, String database, String table, String conditions, String startKey, String endKey, String columnFamilyList, String expendParams);


    /**
     * 基于键值的数据查询(queryByKey)
     * @param connectionId 必填 是
     * @param database 不必填
     * @param table 必填
     * @param rowkey 必填
     * @param columnFamilyList 列簇 不必填 可传递列族中某个列或整个列族，定义方
     * 式：
     * [columnfamily1:column1,c]
     * @param expendParams  扩展参数 以json字符串格式定义：
     * {key1:value1, key2:value2,nf。
     * @return
     */
     DataqueryByKeyResponse queryByKey(String connectionId, String database, String table, String rowkey, String columnFamilyList, String expendParams);

    /**
     * 范围查询(queryByRange)
     * @param connectionId 连接id 不能为空
     * @param database 数据库 能为空
     * @param table 表名 不能为空
     * @param filter  过滤器对象 不能为空
     * @param expendParams 扩展参数可能为空
     * @return
     */
     DataQueryByRangeResponse queryByRange(String connectionId, String database, String table, String filter, String expendParams);
}
